package com.generator;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {
    public static void main(String[] args) {
        // 1. 配置数据源（必须）
        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(
                "jdbc:mysql://localhost:3306/ssmre1kx",
                "root",
                "root"
        ).build();

        // 2. 初始化 AutoGenerator（必须传入 DataSourceConfig）
        AutoGenerator generator = new AutoGenerator(dataSourceConfig);

        // 3. 全局配置
        GlobalConfig globalConfig = new GlobalConfig.Builder()
                .outputDir(System.getProperty("user.dir") + "/src/main/java")
                .author("Liuzb")
                .commentDate("2025-03-27 9:22")
                .disableOpenDir() // 生成后不打开目录
                .build();
        generator.global(globalConfig);

        // 4. 包配置
        PackageConfig packageConfig = new PackageConfig.Builder()
                .parent("com.example.demo") // 包名
                .entity("entity")  // 实体类包名
                .mapper("mapper")  // Mapper 包名
                .service("service") // Service 包名
                .controller("controller") // Controller 包名
                .build();
        generator.packageInfo(packageConfig);

        // 5. 策略配置
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
                .addInclude("users") // 要生成的表
                .entityBuilder() // 实体类配置
                .enableLombok() // 使用 Lombok
                .naming(NamingStrategy.underline_to_camel) // 表名转驼峰
                .columnNaming(NamingStrategy.underline_to_camel) // 列名转驼峰
                .controllerBuilder() // Controller 配置
                .enableRestStyle() // REST 风格
                .build();
        generator.strategy(strategyConfig);

        // 6. 执行生成
        generator.execute();
    }
}